using System;
using System.Collections.Generic;
using System.Drawing;

namespace PluginFrame
{
	public interface IPcrExperimentProject
	{
		string FileName { get; set; }

		string Remark { get; set; }

		PcrSystemType SystemType { get; set; }

		int AvailableChannelAmount { get; }

		IPcrProgram PcrProgram { get; set; }

		TemperatureControlType TemperatureControlType { get; set; }

		double ReactionVolume { get; set; }

		List<IAnalysisParameterConfiguration> AnalysisParameterConfigurationList { get; set; }

		List<IProjectProperty> ProjectPropertyList { get; set; }

		List<bool> IsChannelUsed { get; set; }

		IChannelConfiguration[] ChannelConfigurations { get; }

		List<IPcrCell> Cells { get; }

		IProjectItem[] ProjectItems { get; set; }

		Guid Guid { get; }

		string Name { get; set; }

		double[,] CrossTalkValue { get; set; }

		string Unit { get; set; }

		string QuantitativeGreyConlusion { get; set; }

		string QualitativeGreyConlusion { get; set; }

		string QuantitativePositiveConlusion { get; set; }

		string QualitativePositiveConlusion { get; set; }

		string QuantitativeNegativeConlusion { get; set; }

		string QualitativeNegativeConlusion { get; set; }

		Color QuantitativeGreyColor { get; set; }

		Color QualitativeGreyColor { get; set; }

		Color QuantitativePositiveColor { get; set; }

		Color QualitativePositiveColor { get; set; }

		Color QuantitativeNegativeColor { get; set; }

		Color QualitativeNegativeColor { get; set; }

		int TubeCount { get; set; }

		IRuleItem AdvancedRule { get; set; }

		bool IsUseAdvancedRule { get; set; }

		bool[] ZonePasswordStatus { get; set; }

		string Password { get; set; }

		bool IsPasswordMatch { get; set; }

		int MinRealTimeAmplificationCycle { get; set; }

		int MinRealTimeMeltingCycle { get; set; }

		void Update();

		void SetApplication(IApplication app);

		IProjectItem CreateProjectItem(int index, string name, int tubeCount);

		IProjectItem ChangeProjectItemName(int index, string name);

		bool IsProjectMatch(IPcrExperimentProject project);

		bool IsProjectSame(IPcrExperimentProject project);

		void CalculateRealTimeMaxCycleValue();
	}
}
